NO.50 Pow(x,n) 中等
思路一:暴力法 这道题暴力法是不能通过leetcode判题机,会得到一个t。但是方法本身是可以得到正确答案的,所以我们需要对他进行优化。暴力法的想法很简单的:2^3=2*2*2。
如果n为负,则n=-n同时x=1/x,例如2^(-3)=1/2*1/2*1/2。但是这里要注意n的取值范围,主要是 正整数和负整数的不同范围限制 。
1 | public double myPow(double x, int n) { |
时间复杂度:O(n)
思路二:二分法 当我们得到x^(n/2)的时候,我们不需要再去乘上n/2个x了,而是x^(n/2)*x^(n/2)=x^n。
这个想法用递归很容易实现,但是需要注意的是n的奇偶性,如果n为奇数则需要再乘上一个x。
1 | public double myPow(double x, int n) { |
时间复杂度:O(logn)
本人菜鸟,有错误请告知,感激不尽!